package com.huiqiao.lesson7.proxy.cglibProxy;

import com.huiqiao.lesson7.proxy.jdkProxy.Client;
import com.huiqiao.lesson7.proxy.staticProxy.Landlord;
import net.sf.cglib.proxy.Enhancer;

/**
 * 代理类工厂
 */
public class CglibProxyFactory {

    public static Landlord getProxy() {
        // 创建动态代理增强类
        Enhancer enhancer = new Enhancer();
        // 设置被代理类
        enhancer.setSuperclass(Landlord.class);
        // 设置方法拦截器
        enhancer.setCallback(new LandlordMethodInterceptor());
        return (Landlord) enhancer.create();
    }

    /**
     * 测试方法
     */
    public static void main(String[] args) {
        // 生成房东代理
        Landlord proxy =  CglibProxyFactory.getProxy();
        // 生成租客
        Client client = new Client();
        // 房租10元
        int money = 10;
        // 房客开始支付房租
        client.pay(10);
        // 中介代理收租
        proxy.chargeRent(money);
    }
}
